/*
 * @Author : Genustin
 * @Date   : 2012-05-30
 * 棋盘上的距离
 * 有N行输入，每行是棋子的起始位置和目标位置
 * 求解王/后/车/象分别最少几步走到目标，走不到输出Inf
 */
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

int main()
{
	int n;
	int x, y;
	char start[3], end[3];
	cin >> n;
	for (size_t i = 0; i < n; ++i)
	{
		cin >> start >> end;
		x = abs(end[0] - start[0]);
		y = abs(end[1] - start[1]);
		// start和end的相对位置有4种情况，同一个点、一条直线、一条斜线、偏斜线
		// 偏斜线的时候，王要走的步数就是大边的长度，想象把所有格子都移到大边上
		// 当横纵坐标差值和是奇数的时候，象就走不到
		// 输出依次为 王 后 车 象
		if (x==0 and y==0) {
			// 同一个点
			printf("0 0 0 0\n");
		} else if (x*y == 0) {
			// 同一条直线
			printf("%d 1 1 %s\n", x+y, ((x+y)%2==0)?"2":"Inf");
		} else if (x==y) {
			// 同一条斜线
			printf("%d 1 2 1\n", x);
		} else {
			// 偏斜线
			printf("%d 2 2 %s\n", (x>y)?x:y, ((x+y)%2==0)?"2":"Inf");
		}
	}
	return 0;
}